'use strict';
var config = require('./config/config');
var gulp = require('gulp');
var clean = require('gulp-clean');
var sequence = require('gulp-sequence');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var minifyCss = require('gulp-minify-css');
var bs = require("browser-sync").create();
gulp.task('default', ['clean'], sequence(['html', 'css', 'js', 'img', 'lib']));
// watch
gulp.task('watch', ['default'], function () {
  gulp.start('server');
  gulp.watch(config.html.src, ['html']);
  gulp.watch(config.css.src, ['css']);
  gulp.watch(config.js.src, ['js']);
  gulp.watch(config.img.src, ['img']);
})
// clean
gulp.task('clean', function () {
  return gulp.src(config.clean.src).pipe(clean());
})
// server
gulp.task('server', function () {
  bs.init(config.bs);
})
// html
gulp.task('html', function () {
  return gulp.src(config.html.src)
  .pipe(gulp.dest(config.html.dist))
  .pipe(bs.stream({once: true}));
})
// css
gulp.task('css', function () {
  return gulp.src(config.css.src)
  .pipe(sass())
  .pipe(autoprefixer(config.css.autoprefixer))
  .pipe(minifyCss(config.css.minifyCss))
  .pipe(gulp.dest(config.css.dist))
  .pipe(bs.stream({once: true}))
})
// js
gulp.task('js', function () {
  return gulp.src(config.js.src)
  .pipe(gulp.dest(config.js.dist))
  .pipe(bs.stream({once: true}))
})
// img
gulp.task('img', function () {
  return gulp.src(config.img.src)
  .pipe(gulp.dest(config.img.dist))
  .pipe(bs.stream({once: true}));
})
// lib
gulp.task('lib', function () {
  return gulp.src(config.lib.src)
  .pipe(gulp.dest(config.lib.dist));
})